package org.example.flea_market_mvc.param;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Data;

/**
 * 购物车参数类
 * 用于接收前端传入的购物车相关请求参数
 */
@Data
public class ShoppingCartParam {
    @NotNull(message = "用户ID不能为空")
    private Integer userId;        // 用户ID（登录用户使用）
    @NotNull(message = "商品ID不能为空")
    private Integer productId;     // 商品ID
    @NotNull(message = "商品数量不能为空")
    @Min(value = 1, message = "商品数量不能小于1")
    private Integer quantity;      // 商品数量
    @Size(max = 100, message = "会话ID长度不能超过100")
    private String sessionId;      // 会话ID（未登录用户使用）
    @Size(max = 200, message = "商品名称长度不能超过200")
    private String productName;    // 商品名称（冗余字段）
    @NotNull(message = "商品单价不能为空")
    @Min(value = 0, message = "商品单价不能为负数")
    private BigDecimal productPrice;  // 商品单价（冗余字段）
    @Size(max = 500, message = "商品图片URL长度不能超过500")
    private String productImage;    // 商品图片URL（冗余字段）
    private LocalDateTime expireTime;  // 失效时间（用于游客购物车自动清理）
}